---
title: OSS Compass分制切换 | 看算法变身魔法！
tags:
  - 动态
---

![image5.jpg](media/report-zh.png)

<!--truncate-->

### OSS Compass

OSS Compass 自 2023 年 2 月 21 日正式对外发布以来，一直在加速迭代，不断优化指标模型及 SaaS 服务。其中 SaaS 服务除了包括原有 Dashboard（看板），近期还为开发者及用户搭建了 Compass Lab（Compass 实验室），供开发者及用户定制自己的模型。本系列文章将为大家逐一解析指标模型、Dashboard 和即将发布的 Compass Lab，以及其他 OSS Compass 新增功能，敬请关注。

嘿，各位开源探险家们！前两期“OSS Compass 功能更新”系列文章已经震撼登场，揭开了“Compass 徽章”和“Dashboard 图表 Y 轴缩放功能”的神秘面纱。今天，小编终于为大家带来期待已久的“百分制”功能更新啦！这个功能和 OSS Compass（以下简称“Compass”）评估指标模型的算法密切相关哦。废话不多说，让我们一起来看看这个厉害的算法是如何变身魔法的吧！

### 01 故事开始：Compass 与 Criticality Score

Compass 的初衷是让开源项目的评估更科学、更客观，它的模型算法、后端组件原型最初来自于 CHAOSS。而 CHAOSS 使用的部分模型算法最初参考了 Criticality Score。

Criticality Score，听起来很神秘，它是由 Google 开发、通过开源安全基金会 (OpenSSF) 开源的一个量化开源项目重要性/关键性的评估项目。通过选取诸如“贡献者数量”、“提交频率”、“过去一年的发版数量”等指标，再利用公式计算出开源项目的重要性。而它使用的神奇公式是这样的：

![image1.png](media/01.jpg)

这个公式涉及三个神秘变量：ai、Si 和 Ti。ai 代表第 i 个指标的权重，Si 是该指标的值，Ti 则是指标的阈值。阈值指的是指标可以达到的最大值。

采用 log 函数进行归一化操作是常用方法，但这个公式有点特别：分子和分母都使用了 log(1+x)形式而非 log(x)，+1 的作用是确保最终计算结果是正数；而分母使用了 log(1+max(Si,Ti))，max 的目的是当 Si<Ti 时，分母固定为常量 log(1+Ti)，而 Si>Ti 时，公式结果恒为 1。

这样一番复杂的计算，让 C 值处于 0-1 之间，真是算法的奇妙魔法！

### 02 魔法的优势与局限：Criticality Score

Criticality Score 的算法在评估开源项目时，确实有着超高优势，充分考虑了指标取值的差异，同时还允许灵活调整权重。不过，魔法也有一些局限性，例如计算结果本应在 0-1 之间，但在实际应用中可能出现负数或大于 1 的情况，这可不太科学哦！

而且 Criticality Score 定义的指标并不够全面，被批评不够准确和客观。嗯，虽然是魔法，但也有待改进！

### 03 Compass 的魔法优化

Compass 闪亮登场！为解决魔法的局限性，我们做了优化！

首先，我们去除了“Criticality Score”中一些无意义的指标，增加了更为合理的评估指标。目前，Compass 选取了 30 多个评估指标（还在不断增加中），涵盖生产力、稳健性和创新力三个维度，并将这些指标巧妙地组合起来，打造了一个完整的评估体系。

其次，我们设置了合理的权重和阈值。借助专家经验和 AHP 层次分析法，计算出可靠的权重。同时，根据对百万个开源项目代码仓的观测结果，设定了合理的阈值。真是玩出了魔法的精妙！

最后，我们对 0-1 之外的计算结果进行了标准化处理，保证这些结果最终都在 0-1 之间。这样一来，魔法的结果更科学啦！

为了验证优化方案，我们把优化后的指标模型计算结果与 Google Criticality Score 的计算结果进行了比较，最终发现两者具有显著的强正相关性。

此外，Compass 也在不断改进算法，未来我们将推出全新的算法体系~欢迎加入，让我们一起创新算法吧~

### 04 魔法变身魅力：从一分制到百分制

经历了优化，魔法的魅力更大了！

上面的公式计算出的结果在 0-1 之间，我们称之为“一分制”。现在，我们新增了将一分制切换为百分制的功能。

为什么要做这个转换呢？

这是因为一分制的计算结果形成图表以后，虽然曲线趋势携带信息量充分，但分值定义复杂，解释成本高。所以，我们新增了百分制的功能，让魔法变得更加通识易懂！

为了让一分制到百分制的转换更合理，我们首先对近百万个开源项目的一分制结果做了统计分布。没错！就是下面这个图~可以看到近 85%的项目得分集中在 0.2-0.3 和 0.3-0.5 之间。如果将一分制得分简单的等比例缩放成百分制，显然不符合常理啊~

![image2.png](media/02.png)

于是，我们与一些专家进行了一番探讨，然后建立了如下的对应关系。并且在 Dashboard 页面添加了“百分制”转换按钮，方便用户们灵活切换使用。

<center>

![image2.png](media/03.png)

</center>

### 05 探秘魔法，尽在 Compass！

探险家们，想要亲身体验魔法的力量吗？快打开 Compass 官网，点击探索页，找到你感兴趣的开源项目的 Dashboard。在右上角设置图标下点击“百分制”按钮，看着指标图表的值在 0-100 之间变化，感受魔法的奇妙变身！

![image2.gif](media/04.gif)

当按钮是灰色（非选中状态）时，指标图表 Y 轴的值在 0-1 之间，这是利用前面那个神奇公式直接计算或标准化后的结果。当“百分制”按钮被选中，它将变成蓝色，此时指标图表 Y 轴的值在 0-100 之间，此时就实现了一分制到百分制的转换。

有问题？有建议？别犹豫！扫描文末二维码，加入 Compass 官方微信群，和小编及更多热爱开源的伙伴一起探讨交流吧~

未来，OSS Compass 将持续演进，回馈广大用户，为开源项目评估提供更大便利，助力开源社区健康可持续发展。

我们期待更多开发者加入 OSS Compass 社区，一起为 OSS Compass 的发展贡献力量。同时，也欢迎广大用户持续使用和反馈，为我们提升 OSS Compass 的能力提供源源不断的动力。

<center>

[![image2.png](media/slack.jpg)](https://join.slack.com/t/oss-compass/shared_invite/zt-1ttt9sv5h-8E~oPP6VJqm8ero5qH9LlA)

</center>

如果点击按钮无效，请复制以下 URL 到浏览器：

https://join.slack.com/t/oss-compass/shared_invite/zt-1ttt9sv5h-8E~oPP6VJqm8ero5qH9LlA

你也可以加入我们的微信交流群，随时与我们交流。

![image2.png](media/we.jpg)
